# Java-Quiz-bot
For 21 kagort )<br>

[Загрузка](#загрузка)<br>
[Запуск бота](#запуск)<br>
[Настройка квиза](#квиз)<br>
[Контакты](#контакты)<br>

Этот бот я написал в рамках своего ПЭТ проекта после получения диплома Java разработчика в Yandex practicum
На данный момент бот использует стеки и версии библиотек: <br>
Amazon corretto : 17 <br>
Spring Boot : 3.1.0 <br>
Telegrambots : 6.8.0 <br>
TelegramLongPollingBot <br>

В планах - дальнейшее развитие. Roadmap по развитию пришлю по запросу.<br>
Если у вас есть желание поучаствовать в развитие проекта, контакты внизу страницы ))


#Использование
Бот на данный момент не является коммерческим проектом, поэтому разрешено его использование без ограничений
<br>(кроме случаев, предусмотренных законодательством РФ)

# Настройка и запуск
## Загрузка
 <details><summary>В виде репозитория</summary>
Клонируем репозиторий 
<pre>

git clone git@github.com:alex-from-90/Java-Quiz-bot.git
</pre>


Скачиваем на свой локальный компьютер
<pre>
git pull
    </pre>

 </details>

 <details><summary>В виде zip архива</summary>

https://github.com/alex-from-90/Java-Quiz-bot/archive/refs/heads/master.zip

Распаковываем архив в любое место на локальном компьютере и открываем в intelligent idea
</details>

**Настройка** <br>
Для работы бота требуется токен, полученный от телеграмма. 
Что бы получить токен, заходим в телеграмм и в строке поиска вводим - botfather <br /><br />
После приветствия появятся команды управления вашими ботами
выбираем<br>
**/newbot - create a new bot**

<br/>
Придумываем и отправляем имя для своего бота<br /><br />
В следующем шаге нужно придумать nic бота, по которому пользователи смогут обращаться к нему.
<br/>

**Ник обязательно должен содержать слово _bot в конце**

После успешного создания бота, вам будет выдан токен <br><br>
Use this token to access the HTTP API:
**какой то набор символов**

Записываем или копируем этот набор и вставляем в фаил<br>
**config.properties**<br>
Путь к файлу:<br>
bot -> src - > main -> resources
<pre>
bot.name = Ник бота (которое заканчивается на _bot)
bot.token = Полученный токен
bot.chatId = если планируете разместить бота в группе, получите id группы (можно оставить пустым)
bot.messageThreadId = Если группа содержит темы, получите id темы (можно оставить пустым)
</pre>

# Запуск

Для запуска бота достаточно перейти в intelligent idea в папку bot -> src - > main -> java -> com.quiz.bot
<br>
и запустить BotApplication.java

<br>
Далее находите своего бота в поиске телеграмм по нику и проверяете работоспособность ))
<br>
Добавление бота в группу происходит по простому поиску бота по нику.

**Развертывание бота в докере**
<br>
Для удобства развертывания в докере вы можете использовать docker-compose.yml 
который находится в корне проекта.
<br>
- Открываем проект с ботом в intelligent idea
- Выполняем в командной строке 
<pre>maven clean package</pre>
- запускаем на исполнение docker-compose.yml <br>
(Не забудте выбрать current file при запуске, что б конфигурация run запустила именно этот фаил, а не весь проект)
<br> Образ докера создастся и запустится автоматически

Для непрерывной работы бота рекомендуется сделать деплой бота на сервер. Подойдёт любой с возможностью деплоя java или установкой docker`a


# Квиз
 <details><summary>Создание вопросов для квиза</summary>
Вопросы с ответами для квиза пока что находятся в файле polls.json
Путь к квизам:<br>
bot -> src - > main -> resources <br>

Квизы представляют собой обычный json, но имеется ряд ограничений.<br>
Вопрос или ответ не должен превышать 300 символов. Это ограничение телеграмма на викторины<br>
Старайтесь не использовать спец символы в вопросах или ответах.<br>
Если же они нужны по условию, добавьте их в метод 
<pre>
escapeSpecialCharacters</pre>
**Шаблон формата json**
<pre>

[
{
"question": "Какой метод используется для вывода текста в консоль?",
"options": [
"print()",
"console.log()",
"System.out.println()",
"echo()"
],
"correctAnswer": "System.out.println()"
},
{
"question": "Второй вопрос:",
"options": [
"1 ответ",
"2 ответ"
],
"correctAnswer": "Правильный ответ"
}
]
</pre>

</details>

# Контакты
Пожелания и предложения принимаются в группе телеграмм или на почту:<br><br>
https://t.me/java_yandex_practicum (Алексей - N911)<br>

freelance@site-n.ru